package com.dao;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.bean.ConfiguracaoBean;
import com.helper.FormatHelper;

public class ConfiguracaoDao {

	public static final String TABELA = "configuracao";

	public static final String COLUNA_CFG_UNI_ID = "uni_id";
	public static final String COLUNA_CFG_ID = "cfg_id";
	public static final String COLUNA_CFG_NUMERO = "cfg_numero";
	public static final String COLUNA_CFG_DATA = "cfg_data";
	public static final String COLUNA_CFG_TEXTO = "cfg_texto";

	public long insert(SQLiteDatabase escola, ConfiguracaoBean configBean){

		ContentValues valores = new ContentValues();
		valores.put(COLUNA_CFG_UNI_ID, configBean.getUnidade().getId());
		valores.put(COLUNA_CFG_ID, configBean.getId());
		valores.put(COLUNA_CFG_NUMERO, configBean.getNumero());
		valores.put(COLUNA_CFG_DATA, FormatHelper.formatDate( configBean.getData() ));
		valores.put(COLUNA_CFG_TEXTO, configBean.getTexto());

		return escola.insert(TABELA, null, valores);

	}

	public long update(SQLiteDatabase escola, ConfiguracaoBean configBean){

		ContentValues valores = new ContentValues();
		valores.put(COLUNA_CFG_UNI_ID, configBean.getUnidade().getId());
		valores.put(COLUNA_CFG_ID, configBean.getId());
		valores.put(COLUNA_CFG_NUMERO, configBean.getNumero());
		valores.put(COLUNA_CFG_DATA, FormatHelper.formatDate( configBean.getData() ));
		valores.put(COLUNA_CFG_TEXTO, configBean.getTexto());

		return escola.update(TABELA, valores, COLUNA_CFG_UNI_ID + " = " + configBean.getUnidade().getId() + 
				" AND " + COLUNA_CFG_ID + " = " + configBean.getId(), null);

	}
	
	public boolean delete(SQLiteDatabase escola, ConfiguracaoBean configBean){
		return escola.delete(TABELA, COLUNA_CFG_UNI_ID + " = " + configBean.getUnidade().getId() + 
				" AND " + COLUNA_CFG_ID + "=" + configBean.getId(), null) > 0;
	}

	public ConfiguracaoBean buscaPorCodigo(SQLiteDatabase escola, long unidade, long rowId) throws ParseException {
		StringBuilder sql = new StringBuilder();
		sql.append(" SELECT * ");
		sql.append("   FROM " + TABELA );
		sql.append("  WHERE "+ COLUNA_CFG_UNI_ID + "=" + unidade );
		sql.append("    AND "+ COLUNA_CFG_ID + "=" + rowId);

		ConfiguracaoBean cfgBean = new ConfiguracaoBean();

		Cursor cursor = escola.rawQuery(sql.toString(), null);

		if(cursor.getCount() > 0){
			cfgBean.getUnidade().setId(cursor.getInt(cursor.getColumnIndex(COLUNA_CFG_UNI_ID)));
			cfgBean.setId(cursor.getInt(cursor.getColumnIndex(COLUNA_CFG_ID)));
			cfgBean.setNumero(cursor.getInt(cursor.getColumnIndex(COLUNA_CFG_NUMERO)));

			String data = cursor.getString(cursor.getColumnIndex(COLUNA_CFG_DATA));
			if (data != null) {
				cfgBean.setData(FormatHelper.parseDate(data));
			}
			
			cfgBean.setTexto(cursor.getString(cursor.getColumnIndex(COLUNA_CFG_TEXTO)));

			cursor.close();
			return cfgBean;
			
		} else {
			cursor.close();
			return null;
		}
	}
	
	public List<ConfiguracaoBean> getAll(SQLiteDatabase escola, long unidadeId) throws ParseException{

		StringBuilder sql = new StringBuilder();
		sql.append(" SELECT * ");
		sql.append("   FROM " + TABELA );
		sql.append("  WHERE "+ COLUNA_CFG_UNI_ID + "=" + unidadeId );

		List<ConfiguracaoBean> configList = new ArrayList<ConfiguracaoBean>();

		Cursor cursor = escola.rawQuery(sql.toString(), null);

		while(cursor.moveToNext()){

			ConfiguracaoBean cfgBean = new ConfiguracaoBean();

			cfgBean.getUnidade().setId(cursor.getInt(cursor.getColumnIndex(COLUNA_CFG_UNI_ID)));
			cfgBean.setId(cursor.getInt(cursor.getColumnIndex(COLUNA_CFG_ID)));
			cfgBean.setNumero(cursor.getInt(cursor.getColumnIndex(COLUNA_CFG_NUMERO)));

			String data = cursor.getString(cursor.getColumnIndex(COLUNA_CFG_DATA));
			if (data != null) {
				cfgBean.setData(FormatHelper.parseDate(data));
			}
			
			cfgBean.setTexto(cursor.getString(cursor.getColumnIndex(COLUNA_CFG_TEXTO)));
			
			configList.add(cfgBean);

		}

		cursor.close();
		return configList;

	}
}
